#pragma once
#include"logger.hpp"
#include<stdarg.h>
namespace logs
{
    Logger::ptr getlogger(const std::string name)//提供全局接口获取日志器
    {
        return LoggerManager::getinstance().getlogger(name);
    }
     Logger::ptr getrootlogger()//提供全局接口获取默认日志器
    {
        return LoggerManager::getinstance().getlogger("root");
    }
    //通过宏代理模式
    #define Debug(fmt,...)  Debug(__FILE__,__LINE__,fmt,##__VA_ARGS__);
    #define Info(fmt,...)  Info(__FILE__,__LINE__,fmt,##__VA_ARGS__);
    #define War(fmt,...)  War(__FILE__,__LINE__,fmt,##__VA_ARGS__);
    #define Error(fmt,...)  Error(__FILE__,__LINE__,fmt,##__VA_ARGS__);
    #define Fatal(fmt,...)  Fatal(__FILE__,__LINE__,fmt,##__VA_ARGS__);
    #define Off(fmt,...)  Off(__FILE__,__LINE__,fmt,##__VA_ARGS__);

    //通过宏直接进行标准输出
    #define DEBUG(fmt,...)  logs::getrootlogger()->Debug(fmt,##__VA_ARGS__);
    #define INFO(fmt,...)  logs::getrootlogger()->Info(fmt,##__VA_ARGS__);
    #define WAR(fmt,...)  logs::getrootlogger()->War(fmt,##__VA_ARGS__);
    #define ERROR(fmt,...)  logs::getrootlogger()->Error(fmt,##__VA_ARGS__);
    #define FATAL(fmt,...)  logs::getrootlogger()->Fatal(fmt,##__VA_ARGS__);
    #define OFF(fmt,...)  logs::getrootlogger()->Off(fmt,##__VA_ARGS__);
}  